1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.roomlist;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.glist;
34 import derelict.purple.account;
35 import derelict.purple.connection;
36 
37 extern (C):
38 
39 alias _PurpleRoomlist PurpleRoomlist;
40 alias _PurpleRoomlistRoom PurpleRoomlistRoom;
41 alias _PurpleRoomlistField PurpleRoomlistField;
42 alias _PurpleRoomlistUiOps PurpleRoomlistUiOps;
43 alias _Anonymous_0 PurpleRoomlistRoomType;
44 alias _Anonymous_1 PurpleRoomlistFieldType;
45 
46 enum _Anonymous_0
47 {
48 	PURPLE_ROOMLIST_ROOMTYPE_CATEGORY = 1,
49 	PURPLE_ROOMLIST_ROOMTYPE_ROOM = 2
50 }
51 
52 enum _Anonymous_1
53 {
54 	PURPLE_ROOMLIST_FIELD_BOOL = 0,
55 	PURPLE_ROOMLIST_FIELD_INT = 1,
56 	PURPLE_ROOMLIST_FIELD_STRING = 2
57 }
58 
59 struct _PurpleRoomlist
60 {
61 	PurpleAccount* account;
62 	GList* fields;
63 	GList* rooms;
64 	gboolean in_progress;
65 	gpointer ui_data;
66 	gpointer proto_data;
67 	guint ref_;
68 }
69 
70 struct _PurpleRoomlistRoom
71 {
72 	PurpleRoomlistRoomType type;
73 	gchar* name;
74 	GList* fields;
75 	PurpleRoomlistRoom* parent;
76 	gboolean expanded_once;
77 }
78 
79 struct _PurpleRoomlistField
80 {
81 	PurpleRoomlistFieldType type;
82 	gchar* label;
83 	gchar* name;
84 	gboolean hidden;
85 }
86 
87 struct _PurpleRoomlistUiOps
88 {
89 	void function (PurpleAccount*) show_with_account;
90 	void function (PurpleRoomlist*) create;
91 	void function (PurpleRoomlist*, GList*) set_fields;
92 	void function (PurpleRoomlist*, PurpleRoomlistRoom*) add_room;
93 	void function (PurpleRoomlist*, gboolean) in_progress;
94 	void function (PurpleRoomlist*) destroy;
95 	void function () _purple_reserved1;
96 	void function () _purple_reserved2;
97 	void function () _purple_reserved3;
98 	void function () _purple_reserved4;
99 }
100 
101 version(Derelict_Link_Static)
102 {
103     extern( C ) nothrow 
104     {
105         void purple_roomlist_show_with_account(PurpleAccount* account);
106         PurpleRoomlist* purple_roomlist_new(PurpleAccount* account);
107         void purple_roomlist_ref(PurpleRoomlist* list);
108         void purple_roomlist_unref(PurpleRoomlist* list);
109         void purple_roomlist_set_fields(PurpleRoomlist* list, GList* fields);
110         void purple_roomlist_set_in_progress(PurpleRoomlist* list, gboolean in_progress);
111         gboolean purple_roomlist_get_in_progress(PurpleRoomlist* list);
112         void purple_roomlist_room_add(PurpleRoomlist* list, PurpleRoomlistRoom* room);
113         PurpleRoomlist* purple_roomlist_get_list(PurpleConnection* gc);
114         void purple_roomlist_cancel_get_list(PurpleRoomlist* list);
115         void purple_roomlist_expand_category(PurpleRoomlist* list, PurpleRoomlistRoom* category);
116         GList* purple_roomlist_get_fields(PurpleRoomlist* roomlist);
117         PurpleRoomlistRoom* purple_roomlist_room_new(PurpleRoomlistRoomType type, const(gchar)* name, PurpleRoomlistRoom* parent);
118         void purple_roomlist_room_add_field(PurpleRoomlist* list, PurpleRoomlistRoom* room, gconstpointer field);
119         void purple_roomlist_room_join(PurpleRoomlist* list, PurpleRoomlistRoom* room);
120         PurpleRoomlistRoomType purple_roomlist_room_get_type(PurpleRoomlistRoom* room);
121         const(char)* purple_roomlist_room_get_name(PurpleRoomlistRoom* room);
122         PurpleRoomlistRoom* purple_roomlist_room_get_parent(PurpleRoomlistRoom* room);
123         GList* purple_roomlist_room_get_fields(PurpleRoomlistRoom* room);
124         PurpleRoomlistField* purple_roomlist_field_new(PurpleRoomlistFieldType type, const(gchar)* label, const(gchar)* name, gboolean hidden);
125         PurpleRoomlistFieldType purple_roomlist_field_get_type(PurpleRoomlistField* field);
126         const(char)* purple_roomlist_field_get_label(PurpleRoomlistField* field);
127         gboolean purple_roomlist_field_get_hidden(PurpleRoomlistField* field);
128         void purple_roomlist_set_ui_ops(PurpleRoomlistUiOps* ops);
129         PurpleRoomlistUiOps* purple_roomlist_get_ui_ops();
130     }
131 }
132 else
133 {
134     extern( C ) nothrow 
135     {
136         alias da_purple_roomlist_show_with_account = void function(PurpleAccount* account);																					
137         alias da_purple_roomlist_new = PurpleRoomlist* function(PurpleAccount* account);																					
138         alias da_purple_roomlist_ref = void function(PurpleRoomlist* list);																									
139         alias da_purple_roomlist_unref = void function(PurpleRoomlist* list);																								
140         alias da_purple_roomlist_set_fields = void function(PurpleRoomlist* list, GList* fields);																			
141         alias da_purple_roomlist_set_in_progress = void function(PurpleRoomlist* list, gboolean in_progress);																
142         alias da_purple_roomlist_get_in_progress = gboolean function(PurpleRoomlist* list);																					
143         alias da_purple_roomlist_room_add = void function(PurpleRoomlist* list, PurpleRoomlistRoom* room);																	
144         alias da_purple_roomlist_get_list = PurpleRoomlist* function(PurpleConnection* gc);																					
145         alias da_purple_roomlist_cancel_get_list = void function(PurpleRoomlist* list);																						
146         alias da_purple_roomlist_expand_category = void function(PurpleRoomlist* list, PurpleRoomlistRoom* category);														
147         alias da_purple_roomlist_get_fields = GList* function(PurpleRoomlist* roomlist);																					
148         alias da_purple_roomlist_room_new = PurpleRoomlistRoom* function(PurpleRoomlistRoomType type, const(gchar)* name, PurpleRoomlistRoom* parent);						
149         alias da_purple_roomlist_room_add_field = void function(PurpleRoomlist* list, PurpleRoomlistRoom* room, gconstpointer field);										
150         alias da_purple_roomlist_room_join = void function(PurpleRoomlist* list, PurpleRoomlistRoom* room);																	
151         alias da_purple_roomlist_room_get_type = PurpleRoomlistRoomType function(PurpleRoomlistRoom* room);																	
152         alias da_purple_roomlist_room_get_name = const(char)* function(PurpleRoomlistRoom* room);																			
153         alias da_purple_roomlist_room_get_parent = PurpleRoomlistRoom* function(PurpleRoomlistRoom* room);																	
154         alias da_purple_roomlist_room_get_fields = GList* function(PurpleRoomlistRoom* room);																				
155         alias da_purple_roomlist_field_new = PurpleRoomlistField* function(PurpleRoomlistFieldType type, const(gchar)* label, const(gchar)* name, gboolean hidden);			
156         alias da_purple_roomlist_field_get_type = PurpleRoomlistFieldType function(PurpleRoomlistField* field);																
157         alias da_purple_roomlist_field_get_label = const(char)* function(PurpleRoomlistField* field);																		
158         alias da_purple_roomlist_field_get_hidden = gboolean function(PurpleRoomlistField* field);																			
159         alias da_purple_roomlist_set_ui_ops = void function(PurpleRoomlistUiOps* ops);																						
160         alias da_purple_roomlist_get_ui_ops = PurpleRoomlistUiOps* function();			
161     }
162 
163     __gshared
164     {
165 	    da_purple_roomlist_show_with_account purple_roomlist_show_with_account;
166 	    da_purple_roomlist_new purple_roomlist_new;
167 	    da_purple_roomlist_ref purple_roomlist_ref;
168 	    da_purple_roomlist_unref purple_roomlist_unref;
169 	    da_purple_roomlist_set_fields purple_roomlist_set_fields;
170 	    da_purple_roomlist_set_in_progress purple_roomlist_set_in_progress;
171 	    da_purple_roomlist_get_in_progress purple_roomlist_get_in_progress;
172 	    da_purple_roomlist_room_add purple_roomlist_room_add;
173 	    da_purple_roomlist_get_list purple_roomlist_get_list;
174 	    da_purple_roomlist_cancel_get_list purple_roomlist_cancel_get_list;
175 	    da_purple_roomlist_expand_category purple_roomlist_expand_category;
176 	    da_purple_roomlist_get_fields purple_roomlist_get_fields;
177 	    da_purple_roomlist_room_new purple_roomlist_room_new;
178 	    da_purple_roomlist_room_add_field purple_roomlist_room_add_field;
179 	    da_purple_roomlist_room_join purple_roomlist_room_join;
180 	    da_purple_roomlist_room_get_type purple_roomlist_room_get_type;
181 	    da_purple_roomlist_room_get_name purple_roomlist_room_get_name;
182 	    da_purple_roomlist_room_get_parent purple_roomlist_room_get_parent;
183 	    da_purple_roomlist_room_get_fields purple_roomlist_room_get_fields;
184 	    da_purple_roomlist_field_new purple_roomlist_field_new;
185 	    da_purple_roomlist_field_get_type purple_roomlist_field_get_type;
186 	    da_purple_roomlist_field_get_label purple_roomlist_field_get_label;
187 	    da_purple_roomlist_field_get_hidden purple_roomlist_field_get_hidden;
188 	    da_purple_roomlist_set_ui_ops purple_roomlist_set_ui_ops;
189 	    da_purple_roomlist_get_ui_ops purple_roomlist_get_ui_ops;
190     }
191 }